home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / extra_2 / asm106.zip / SD.ASM < prev   
Assembly Source File  |  1995-11-09  |  6KB  |  239 lines

  1. ; +----------------------------------------------------+ ;
  2. ; | Sample DVM Shower for use with the Magic Assembler | ;
  3. ; +----------------------------------------------------+ ;
  4.         mov     ah,09
  5.         mov     dx,offset(headtxt)
  6.         int     21
  7.         cmp     byte [0081],0d
  8.         jne     @1
  9.         mov     dx,offset(syntax)
  10.         jmp     error
  11. @1      mov     si,0082
  12.         mov     showit,00
  13. @4      lodsb
  14.         cmp     al,'/'
  15.         jne     @5
  16.         mov     byte [si-01],00
  17.         lodsb
  18.         cmp     al,'i'
  19.         jne     @6
  20.         mov     showit,ff
  21.         jmps    @5
  22. @6      cmp     al,'I'
  23.         jne     @5
  24.         mov     showit,ff
  25. @5      cmp     al,0d
  26.         jne     @4
  27.         mov     byte [si-01],00
  28.         mov     ax,3d00
  29.         mov     dx,0082
  30.         int     21
  31.         jnc     @7
  32.         mov     dx,offset(openerr)
  33.         jmp     error
  34. @7      mov     handle,ax
  35.         mov     bx,ax
  36.         mov     ah,3f
  37.         mov     cx,0003
  38.         mov     dx,offset(header)
  39.         int     21
  40.         mov     si,offset(header)
  41.         mov     di,offset(musthd)
  42.         mov     cx,0003
  43. @8      cmpsb
  44.         jne     @9
  45.         loop    @8
  46.         jmps    @10
  47. @9      mov     dx,offset(notdvm)
  48.         jmp     error
  49. @10     mov     ah,3f
  50.         mov     cx,0001
  51.         mov     dx,offset(fullqrt)
  52.         int     21
  53.         cmp     fullqrt,'V'
  54.         je      @11
  55.         cmp     fullqrt,'Q'
  56.         je      @12
  57.         mov     infobyt,a0
  58.         jmps    @13
  59. @12     mov     infobyt,20
  60.         jmps    @13
  61. @11     mov     ah,3f
  62.         mov     dx,offset(version)
  63.         int     21
  64.         cmp     version,31
  65.         jna     @14
  66.         mov     dx,offset(verr)
  67.         jmp     error
  68. @14     mov     ah,3f
  69.         mov     dx,offset(infobyt)
  70.         int     21
  71. @13     mov     ah,3f
  72.         mov     cx,0002
  73.         mov     dx,offset(dtime)
  74.         int     21
  75.         test    infobyt,08
  76.         jz      @15
  77.         mov     ah,3f
  78.         mov     dx,offset(l)
  79.         int     21
  80.         mov     cx,l
  81. @16     push    cx
  82.         mov     ah,3f
  83.         mov     cx,0001
  84.         mov     dx,offset(ch)
  85.         int     21
  86.         push    bx
  87.         mov     ah,0e
  88.         mov     al,ch
  89.         xor     bh,bh
  90.         cmp     showit,ff
  91.         je      @17
  92.         int     10
  93. @17     pop     bx
  94.         pop     cx
  95.         loop    @16
  96.         xor     ah,ah
  97.         cmp     showit,ff
  98.         jne     @15
  99.         int     16
  100. @15     mov     ax,0013
  101.         int     10
  102.         push    bx
  103.         mov     ax,1012
  104.         mov     bx,0000
  105.         mov     cx,0100
  106.         mov     dx,offset(palette)
  107.         int     10
  108.         pop     bx
  109.         mov     ax,a000
  110.         mov     es,ax
  111. @28     test    infobyt,20
  112.         jz      @32
  113.         mov     ah,3f
  114.         mov     dx,offset(palette)
  115.         test    infobyt,10
  116.         jnz     @33
  117.         mov     cx,0030
  118.         jmps    @34
  119. @33     mov     cx,0300
  120. @34     int     21
  121.         cmp     ax,cx
  122.         jne     @27
  123.         push    bx
  124.         push    es
  125.         mov     ax,ds
  126.         mov     es,ax
  127.         mov     ax,1012
  128.         xor     bx,bx
  129.         test    infobyt,10
  130.         jnz     @35
  131.         mov     cx,0010
  132.         jmps    @36
  133. @35     mov     cx,0100
  134. @36     int     10
  135.         pop     es
  136.         pop     bx
  137. @32     xor     di,di
  138.         test    infobyt,80
  139.         jz      @18
  140.         mov     cx,00c8
  141.         jmps    @19
  142. @18     mov     cx,0064
  143. @19     push    cx
  144.         test    infobyt,40
  145.         jz      @20
  146.         call    showcpr
  147.         jmps    @21
  148. @20     call    showucp
  149. @21     cmp     ah,00
  150.         ja      @27
  151.         test    infobyt,80
  152.         jnz     @22
  153.         add     di,00a0
  154. @22     pop     cx
  155.         loop    @19
  156.         jmps    @28
  157. @27     mov     ah,3e
  158.         mov     bx,handle
  159.         int     21
  160.         xor     ah,ah
  161.         int     16
  162.         mov     ax,0003
  163.         int     10
  164.         mov     ax,4c00
  165.         int     21
  166.  
  167. showcpr test    infobyt,80
  168.         jz      @23
  169.         mov     cx,00a0
  170.         jmps    @24
  171. @23     mov     cx,0050
  172. @24     mov     ah,3f
  173.         mov     dx,offset(line)
  174.         int     21
  175.         cmp     ax,cx
  176.         je      @26
  177.         mov     ah,ff
  178.         ret
  179. @26     mov     si,offset(line)
  180. @25     push    cx
  181.         lodsb
  182.         push    ax
  183.         and     al,f0
  184.         mov     cl,04
  185.         shr     al,cl
  186.         es:
  187.         mov     [di],al
  188.         pop     ax
  189.         and     al,0f
  190.         es:
  191.         mov     [di+01],al
  192.         add     di,0002
  193.         pop     cx
  194.         loop    @25
  195.         xor     ah,ah
  196.         ret
  197.  
  198. showucp test    infobyt,80
  199.         jz      @31
  200.         mov     cx,0140
  201.         jmps    @29
  202. @31     mov     cx,00a0
  203. @29     mov     ah,3f
  204.         mov     dx,offset(line)
  205.         int     21
  206.         mov     si,offset(line)
  207.         cmp     cx,ax
  208.         je      @30
  209.         mov     ah,ff
  210.         ret
  211. @30     movsb
  212.         loop    @30
  213.         xor     ah,ah
  214.         ret
  215.  
  216. error   mov     ah,09
  217.         int     21
  218.         mov     ax,4c00
  219.         int     21
  220.  
  221. headtxt db      'Show DVM - Written by Bert for Magic Software - Development Kit Version' 0a 0d '$'
  222. musthd  db      'DVM'
  223. notdvm  db      'Not a DVM' 0a 0d '$'
  224. openerr db      'Cannot open file' 0a 0d '$'
  225. palette dbe     DVMPAL.BIN
  226. syntax  db      'Syntax: SDA [Filename.DVM][/I]' 0a 0d '/I shows included text (if exist)' 0a 0d '$'
  227. verr    db      'Cannot display this version' 0a 0d '$'
  228. -
  229. ch      db      ?
  230. dtime   dw      ?
  231. fullqrt db      ?
  232. handle  dw      ?
  233. header  ds      3
  234. infobyt db      ?
  235. l       dw      ?
  236. line    ds      140
  237. showit  db      ?
  238. version db      ?
  239.